//给你一个字符串 s ，逐个翻转字符串中的所有 单词 。 
//
// 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 
//
// 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 
//
// 说明： 
//
// 
// 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 
// 翻转后单词间应当仅用一个空格分隔。 
// 翻转后的字符串中不应包含额外的空格。 
// 
//
// 
//
// 示例 1： 
//
// 
//输入：s = "the sky is blue"
//输出："blue is sky the"
// 
//
// 示例 2： 
//
// 
//输入：s = "  hello world  "
//输出："world hello"
//解释：输入字符串可以在前面或者后面包含多余的空格，但是翻转后的字符不能包括。
// 
//
// 示例 3： 
//
// 
//输入：s = "a good   example"
//输出："example good a"
//解释：如果两个单词间有多余的空格，将翻转后单词间的空格减少到只含一个。
// 
//
// 示例 4： 
//
// 
//输入：s = "  Bob    Loves  Alice   "
//输出："Alice Loves Bob"
// 
//
// 示例 5： 
//
// 
//输入：s = "Alice does not even like bob"
//输出："bob like even not does Alice"
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 104 
// s 包含英文大小写字母、数字和空格 ' ' 
// s 中 至少存在一个 单词 
// 
//
// 
// 
//
// 
//
// 进阶： 
//
// 
// 请尝试使用 O(1) 额外空间复杂度的原地解法。 
// 
// Related Topics 双指针 字符串 
// 👍 414 👎 0

package leetcode.editor.cn;
/**
 * [151]翻转字符串里的单词
 */
public class ReverseWordsInAString {
    public static void main(String[] args) {
        Solution solution = new ReverseWordsInAString().new Solution();
        String result = "";
//        result = solution.reverseWords("the sky is blue");
//        if (!result.equals("blue is sky the")) {
//            System.out.println("--1--");
//        }

        result = solution.reverseWords("  hello world  ");
        if (!result.equals("world hello")) {
            System.out.println("--2--");
        }

        result = solution.reverseWords("a good   example");
        if (!result.equals("example good a")) {
            System.out.println("--3--");
        }

        result = solution.reverseWords("  Bob    Loves  Alice   ");
        if (!result.equals("Alice Loves Bob")) {
            System.out.println("--4--");
        }

        result = solution.reverseWords("Alice does not even like bob");
        if (!result.equals("bob like even not does Alice")) {
            System.out.println("--5--");
        }
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String reverseWords(String s) {
        StringBuilder builder = new StringBuilder();
        int start = 0;
        while (start < s.length()) {
            if (s.charAt(start) == ' ') {
                start++;
                continue;
            }
            int end = start;
            while (end < s.length() && s.charAt(end) != ' ') {
                end++;
            }
            builder.insert(0, " " + s.substring(start, end));
            start = end;
        }
        builder.deleteCharAt(0);
        return builder.toString();
    }

    // 解法2
    // 先翻转整个数组
        //再翻转单个单词
        //清除多余空格

}
//leetcode submit region end(Prohibit modification and deletion)

}